package so.ifl.servcie;

import java.util.List;
import java.util.Map;
import org.springframework.transaction.annotation.Transactional;

import so.ifl.vo.MappingVo;
import so.ifl.vo.PayRecordVo;
import so.ifl.vo.ResultVo;
import so.ifl.vo.StudentVo;

/**
 * 
 * create by simon
 * create at 2012-1-10 下午9:45:53
 * <mailto:liangyuanliu@gmail.com>
 */
@Transactional
public interface StudentService {

	/**
	 * 
	 * simon
	 * create at 2012-1-10 下午9:46:00
	 * <mailto:liangyuanliu@gmail.com>
	 * @param params
	 * @param offset
	 * @param limit
	 * @return
	 */
	public List<StudentVo> queryStudentWithParamAndPagination(Map<String, Object> params, Integer offset, Integer limit);
	
	/**
	 * 
	 * simon
	 * create at 2012-1-10 下午9:46:03
	 * <mailto:liangyuanliu@gmail.com>
	 * @param params
	 * @return
	 */
	public Integer countStudentWithParam(Map<String, Object> params);
	
	/**
	 * 
	 * simon
	 * create at 2012-1-10 下午9:46:06
	 * <mailto:liangyuanliu@gmail.com>
	 * @param studentVo
	 */
	public void insertStudent(StudentVo studentVo);
	
	/**
	 * 
	 * simon
	 * create at 2012-1-10 下午9:46:13
	 * <mailto:liangyuanliu@gmail.com>
	 * @param studentVo
	 */
	public void updateStudent(StudentVo studentVo);
	
	/**
	 * 
	 * simon
	 * create at 2012-1-10 下午9:46:16
	 * <mailto:liangyuanliu@gmail.com>
	 * @param companyId
	 */
	public void deleteStudent(Integer studentId);
	
	/**
	 * 查询成绩单
	 * create by aaron.lu
	 * create at 2012-1-18 下午9:37:58
	 * <mailto: atyuan.lu@gmail.com>
	 * @param studentId
	 * @return
	 *
	 */
	public List<ResultVo> queryResult(String studentId);
	
	/**
	 * 保存成绩单的修改
	 * create by aaron.lu
	 * create at 2012-1-18 下午10:08:57
	 * <mailto: atyuan.lu@gmail.com>
	 * @param type
	 * @param result
	 * @param source
	 * @param studentId
	 *
	 */
	public void saveEditOfResult(String type, String result,String source, String studentId);
	
	/**
	 * 保存成绩单的修改
	 * create by aaron.lu
	 * create at 2012-1-19 上午9:09:24
	 * <mailto: atyuan.lu@gmail.com>
	 * @param resultVo
	 *
	 */
	public void saveResult(ResultVo resultVo);
	
	/**
	 * 查询付款记录
	 * create by aaron.lu
	 * create at 2012-1-19 上午10:01:55
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param offset
	 * @param limit
	 * @return
	 *
	 */
	public List<PayRecordVo> queryPayRecordOfStudent(Map<String, Object> params, int offset, int limit);
	
	/**
	 * 统计付款记录
	 * create by aaron.lu
	 * create at 2012-1-19 上午10:11:36
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public int countPayRecord(Map<String, Object> params);
	
	/**
	 * 新增付款记录
	 * create by aaron.lu
	 * create at 2012-1-19 上午10:12:37
	 * <mailto: atyuan.lu@gmail.com>
	 * @param payRecordVo
	 *
	 */
	public void insertPayRecord(PayRecordVo payRecordVo);
	
	/**
	 * 更新付款记录
	 * create by aaron.lu
	 * create at 2012-1-19 上午10:13:21
	 * <mailto: atyuan.lu@gmail.com>
	 * @param payRecordVo
	 *
	 */
	public void updatePayRecord(PayRecordVo payRecordVo);
	
	/**
	 * 删除付款记录
	 * create by aaron.lu
	 * create at 2012-1-19 上午10:14:17
	 * <mailto: atyuan.lu@gmail.com>
	 * @param recordId
	 *
	 */
	public void deletePayRecord(Integer recordId);
	
	/**
	 * 获取匹配信息
	 * create by aaron.lu
	 * create at 2012-3-29 下午11:33:14
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public List<MappingVo> getMapping(Map<String, Object> params);
	
	/**
	 * 分页查询匹配信息
	 * create by aaron.lu
	 * create at 2012-3-30 下午8:10:46
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @param limit
	 * @param offset
	 * @return
	 *
	 */
	public List<MappingVo> getMapping(Map<String, Object> params, int limit, int offset);
	
	/**
	 * 统计匹配信息
	 * create by aaron.lu
	 * create at 2012-3-30 下午8:11:42
	 * <mailto: atyuan.lu@gmail.com>
	 * @param params
	 * @return
	 *
	 */
	public int countMapping(Map<String, Object> params);

}
